//#include <iostream>
//#include <atomic>
//#include <thread>
//#include <vector>   
//
//using namespace std;
//
//struct Date{
//	int _year = 1;
//	int _month = 1;
//	int _day = 1;
//};
//
//
//template<class T>
//void check()
//{
//	cout << typeid(T).name() << endl;
//	cout << std::is_trivially_copyable<T>::value << endl;
//	cout << std::is_copy_constructible<T>::value << endl;
//	cout << std::is_move_constructible<T>::value << endl;
//	cout << std::is_copy_assignable<T>::value << endl;
//	cout << std::is_move_assignable<T>::value << endl;
//	cout << std::is_same<T, typename std::remove_cv<T>::type>::value << endl
//		<< endl;
//}
//
//int main(){
//	check<int>();
//	check<double>();
//	check<int*>();
//	check<Date>();
//	check<Date*>();
//	check<string>();
//	check<string*>();
// return 0;
//}
